var Base = require('geoDigitalBase');
//
const CODECS = [
    //a b  c  d  e  f  g
    [1, 1, 1, 1, 1, 1, 0], // 0
    [0, 1, 1, 0, 0, 0, 0], // 1
    [1, 1, 0, 1, 1, 0, 1], // 2
    [1, 1, 1, 1, 0, 0, 1], // 3
    [0, 1, 1, 0, 0, 1, 1], // 4
    [1, 0, 1, 1, 0, 1, 1], // 5
    [1, 0, 1, 1, 1, 1, 1], // 6
    [1, 1, 1, 0, 0, 0, 0], // 7
    [1, 1, 1, 1, 1, 1, 1], // 8
    [1, 1, 1, 1, 0, 1, 1], // 9
    [1, 1, 1, 0, 1, 1, 1], // 10 A
    [0, 0, 1, 1, 1, 1, 1], // 11 b
    [1, 0, 0, 1, 1, 1, 0], // 12 C
    [0, 1, 1, 1, 1, 0, 1], // 13 d
    [1, 0, 0, 1, 1, 1, 1], // 14 E
    [1, 0, 0, 0, 1, 1, 1], // 15 F
];
/**
 * 数字段显示器
 */
var Seg8Digital = cc.Class({
    extends: Base,

    properties: {
        a:{
            default:null,
            type:cc.Node,
        },
        b:{
            default:null,
            type:cc.Node,
        },
        c:{
            default:null,
            type:cc.Node,
        },
        d:{
            default:null,
            type:cc.Node,
        },
        e:{
            default:null,
            type:cc.Node,
        },
        f:{
            default:null,
            type:cc.Node,
        },
        g:{
            default:null,
            type:cc.Node,
        },
        dp:{
            default:null,
            type:cc.Node,
        },
    },
    
    onLoad(){
        this._segs = [this.a, this.b, this.c, this.d,
            this.e, this.f, this.g, this.dp];
        //
        this.setDigital(this.digital, this.showDP);
    },
    /**
     * 设置要显示的数字，以十进制设置
     * @param {number} digital 十进制数字
     * @param {boolean} showDP 是否显示小数点
     */
    setDigital(digital, showDP){
        //
        if (this._segs == null) return;
        //
        this.digital = digital % this.radix;
        //
        var codec = CODECS[this.digital];
        //
        for(var i = 0; i < codec.length; ++i) {
            var seg = this._segs[i];
            var v = codec[i];
            seg && (seg.active = (v == 1));
        }
        //
        this.setDP(showDP);
    },
    /**
     * 是否显示小数点
     * @param {bool} dp 
     */
    setDP(dp){
        this.dp && (this.dp.active = dp);
    },
});

module.exports = Seg8Digital;
